package article4.noninstance;

/**
 * 通过私有构造器强化不可实例化的能力
 *
 * 工具类（utility class）不希望被实例化，因为实例化对它没有任何意义。
 * 然而在缺少显式构造器的情况下，编译器会自动提供一个公有的、无参的缺省构造器（default constructor ）。
 * 对于用户而言，这个构造器与其他的构造器没有任何区别。在已发行的API中常常可以看到一些被无意识地实例化的类。
 * 企图通过将类做成抽象类来强制该类不可被实例化是行不通的。该类可以被子类化，并且该子类也可以被实例化。
 * 这样甚至误导用户，以为这种类是专门为了继承而设计的（详见第19条）.然后有一些简单的习惯用法可以确保类不可被实例化。
 * 由于只有当类不可包含显式构造器的时候编译器才会生成缺省构造器，因此只要让这个类包含一个私有构造器，它就不能被实例化。
 *
 * @author cctv
 *
 */
public class Demo {

}